// DeepSeek API 相关配置
const API_KEY = 'sk-89132845f54c494a8c177cc977c29009';
const DEEPSEEK_API_URL = 'https://api.deepseek.com/v1/chat/completions';

/**
 * AI 客服 API
 */
export const aiApi = {
    /**
     * 向 AI 发送消息获取回复
     * @param {string} message - 用户消息内容
     * @param {Array} history - 历史对话记录，格式为 [{role: 'user|assistant', content: '消息内容'}]
     * @returns {Promise} - 返回 AI 回复
     */
    async sendMessage(message, history = []) {
        try {
            // 确保历史记录是一一对应的，如果不是则进行修复
            const cleanHistory = this.ensureOneToOneConversation(history);
            
            // 准备发送给 DeepSeek 的请求体
            const requestBody = {
                model: "deepseek-chat", // 使用 DeepSeek 的聊天模型
                messages: [
                    {
                        role: "system",
                        content: "你是一个宠物商城的客服助手，名字叫'萌宠助手'。你的职责是回答用户关于宠物、商品和服务的问题。请保持礼貌、专业，提供准确的宠物相关知识和建议。你的回答应该简洁明了，语气亲切。如果遇到你无法解答的问题，可以建议用户联系人工客服。请确保每个用户问题只回复一次，保持对话的一一对应关系。"
                    },
                    // 添加处理后的历史消息记录
                    ...cleanHistory,
                    // 添加用户当前消息
                    {
                        role: "user",
                        content: message
                    }
                ],
                temperature: 0.7, // 控制回答的创造性
                max_tokens: 500  // 限制回复长度
            };

            // 发送请求到 DeepSeek API
            const response = await fetch(DEEPSEEK_API_URL, {
                method: 'POST',
                headers: {
                    'Content-Type': 'application/json',
                    'Authorization': `Bearer ${API_KEY}`
                },
                body: JSON.stringify(requestBody)
            });

            if (!response.ok) {
                const errorData = await response.json();
                throw new Error(errorData.error?.message || '请求 AI 服务失败');
            }

            const data = await response.json();
            return {
                code: 200,
                data: data.choices[0].message.content,
                message: 'success'
            };
        } catch (error) {
            console.error('AI 请求错误:', error);
            return {
                code: 500,
                data: null,
                message: error.message || 'AI 服务请求失败'
            };
        }
    },
    
    /**
     * 确保对话历史是一一对应的
     * @param {Array} history - 原始历史记录
     * @returns {Array} - 处理后的历史记录
     */
    ensureOneToOneConversation(history) {
        if (!history || history.length === 0) return [];
        
        const cleanHistory = [];
        let expectRole = 'user'; // 期望的下一个角色
        
        for (let i = 0; i < history.length; i++) {
            const message = history[i];
            
            // 如果角色符合预期，则添加到清理后的历史中
            if (message.role === expectRole) {
                cleanHistory.push(message);
                // 切换期望角色
                expectRole = expectRole === 'user' ? 'assistant' : 'user';
            } 
            // 如果连续出现同一角色的消息，只保留最新的一条
            else if (message.role === cleanHistory[cleanHistory.length - 1]?.role) {
                // 替换最后一条消息
                cleanHistory[cleanHistory.length - 1] = message;
            }
        }
        
        // 确保历史记录以assistant结尾，这样新的用户消息才能得到一一对应的回复
        if (cleanHistory.length > 0 && cleanHistory[cleanHistory.length - 1].role === 'user') {
            // 移除最后一条用户消息，因为它没有对应的AI回复
            cleanHistory.pop();
        }
        
        return cleanHistory;
    }
}; 